Modul 9 von 16 · 📖 9 min Lesezeit · ⏱ 30 min gesamt
FI-AE 09 Versionsverwaltung mit Git
Inhaltsverzeichnis (6 Abschnitte)
FI-AE 09 Versionsverwaltung mit Git
In diesem Modul erlernen Sie fortgeschrittene Git-Techniken für professionelles Softwareentwicklung. Sie verstehen Branching-Modelle wie Git Flow und Trunk-Based Development, beherrschen den Umgang mit Pull Requests, können Merge-Konflikte effizient lösen und wissen, wann Rebase gegenüber Merge bevorzugt werden sollte.
Konzepte und Hintergrund
- Branching-Modelle
- Strategien zur Organisation von Entwicklungszweigen in Git, die Teamarbeit und Code-Qualität sicherstellen. Git Flow etabliert Haupt-, Feature-, Release- und Hotfix-Zweige, während Trunk-Based Development auf kurzen Lebenszyklen und häufigen Merges in den Hauptzweig setzt.
- Pull Requests
- Mechanismus zur Code-Review und Integration, bei dem Änderungen in einem Branch vorgeschlagen und diskutiert werden, bevor sie in den Zielzweig zusammengeführt werden.
- Merge-Konflikte
- Situationen, in denen Git automatisch entscheiden kann, wie Änderungen zusammenzuführen, weil identische Zeilen in beiden Branches unterschiedlich geändert wurden.
- Rebase vs. Merge
- Zwei Strategien zur Integration von Branches: Merge behält den vollständigen Verlauf bei, während Rebase die Commits eines Branches auf den neuesten Stand des Zielbranches neu schreibt und einen linearen Verlauf erzeugt.
Architektur-Diagramm
flowchart LR A[main/master] --> B[develop] B --> C[feature/xyz] B --> D[release/1.0] D --> E[hotfix/critical] C -->|Pull Request| B D -->|Pull Request| A E -->|Merge| A E -->|Merge| B
Praktische Schritte
- Erstellen Sie einen neuen Feature-Branch vom develop-Zweig:
git checkout developgit checkout -b feature/neue-funktion - Implementieren Sie Ihre Änderungen und committen Sie regelmäßig mit aussagekräftigen Nachrichten:
git commit -m "Login-Formular validiert" - Puschen Sie Ihren Branch zum Remote-Repository:
git push origin feature/neue-funktion - Erstellen Sie einen Pull Request über die Git-Web-Oberfläche oder mit der CLI:
gh pr create --title "Neues Login-Formular" --body "Implementiert OAuth2-Integration" - Lösen Sie auftretende Merge-Konflikte lokal:
Bearbeiten Sie die Konfliktdateien und führen Sie aus:git pull origin developgit add .git commit -m "Konflikt gelöst" - Führen Sie nach Review den Merge durch:
git checkout developgit merge --no-ff feature/neue-funktion - Löschen Sie den Feature-Branch nach erfolgreichem Merge:
git branch -d feature/neue-funktiongit push origin --delete feature/neue-funktion - Erstellen Sie für Releases einen Release-Zweig vom develop:
git checkout -b release/1.2.0 develop
Häufige Fallstricke
Weiterführende Ressourcen
- Offizielles Git-Buch (deutsche Übersetzung)
- Git Flow - Vincent Driessen's Branching-Modell
- Trunk-Based Development - Offizielle Ressource
- Atlassian Git-Tutorials (deutsch)
- Git 2.30.0+ - Neuerungen und Best Practices
Wissens-Check
Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.
1. Welches Branching-Modell bevorzugt kurze Lebenszyklen für Feature-Branches und häufige Merges in den Hauptzweig?
- A) Git Flow
- B) Trunk-Based Development
- C) Feature Branching
- D) Release Branching
Richtige Antwort: B. Trunk-Based Development setzt auf kurze Lebenszyklen und häufige Merges, während Git Flow längere Lebenszyklen mit spezialisierten Branch-Typen vorsieht.
2. Was ist der Hauptvorteil von Rebase gegenüber Merge bei der Integration von Branches?
- A) Rebase behält den vollständigen Verlauf aller Commits bei
- B) Rebase erzeugt einen linearen Verlauf ohne Merge-Commits
- C) Rebase löst automatisch alle Merge-Konflikte
- D) Rebase funktioniert nur mit lokalen Repositories
Richtige Antwort: B. Rebase schreibt Commits neu und erzeugt einen linearen Verlauf, während Merge Commits beider Branches beibehält und Merge-Commits erzeugt.
3. In welchem Branching-Modell wird ein Hotfix-Zweig typischerweise vom Hauptzweig (main/master) abgeleitet?
- A) Trunk-Based Development
- B) Git Flow
- C) Forking Workflow
- D) Branch-per-Feature
Richtige Antwort: B. Git Flow spezifiziert, dass Hotfixes direkt vom Hauptzweig abgeleitet werden, während andere Modelle dies nicht vorschreiben.
4. Was ist der primäre Zweck von Pull Requests in Git?
- A) Automatisches Testen von Codeänderungen
- B) Mechanismus zur Code-Review und Integration
- C) Lösung von Merge-Konflikten
- D) Erstellung von neuen Branches
Richtige Antwort: B. Pull Requests dienen primär der Code-Review und der kontrollierten Integration von Änderungen, während andere Funktionen separate Werkzeuge oder Git-Befehle erfordern.